package com.wz.util;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.Locale;

/**
 * 日期相关工具类
 * 
 * @since 0.0.1
 * @version 0.0.1
 * @author 邓涛
 *
 */
public class DateUtils {

	/**
	 * 按照format格式化日期
	 * @param date
	 * @param format
	 * @return 格式化后的日期
	 */
	public static String formatDate(Date date, String format) {
		SimpleDateFormat dateFormat = new SimpleDateFormat(format, Locale.ENGLISH);
		String nowTime = dateFormat.format(date);
		return nowTime;
	}
	
	/**
	 * 按照format格式化日期
	 * @param date
	 * @param format
	 * @return 格式化后的日期
	 * @throws ParseException 
	 */
	public static Date parseDate(String date, String format) {
		SimpleDateFormat dateFormat = new SimpleDateFormat(format, Locale.ENGLISH);
		Date nowTime = null;
		try {
			nowTime = dateFormat.parse(date);
		} catch (ParseException e) {
		}
		return nowTime;
	}
	
	/**
	 * 使用yyyyMMddHHmmss格式格式化日期
	 * @param date
	 * @return 格式化后的日期
	 */
	public static String formatDate(Date date) {
		SimpleDateFormat dateFormat = new SimpleDateFormat("yyyyMMddHHmmss", Locale.CHINA);
		String nowTime = dateFormat.format(date);
		return nowTime;
	}
	
	/**
	 * 根据输入格式返回时间<br>
	 * 例如输入：yyyy-MM-dd
	 * @param dateFormatString
	 * @return 按照格式返回当前的系统时间
	 * @since 0.0.1
	 */
	public static String getNowTime(String dateFormatString) {
		SimpleDateFormat dateFormat = new SimpleDateFormat(
				dateFormatString, Locale.CHINA);
		String nowTime = dateFormat.format(new Date());
		return nowTime;
	}
	
	private static Date add(Date date, int calendarField, int amount) {
        if (date == null) {
            throw new IllegalArgumentException("The date can not be null");
        }
        Calendar c = Calendar.getInstance();
        c.setTime(date);
        c.add(calendarField, amount);
        return c.getTime();
    }
	
	/**
	 * 修改date，添加amount天数
	 * @param date
	 * @param amount
	 * @return
	 * @since 0.1
	 */
	public static Date addDays(Date date, int amount) {
        return add(date, Calendar.DAY_OF_MONTH, amount);
    }

	//Mon, 05-Jun-2017 07:39:36 GMT
	public static void main(String[] args) {
		Date date = parseDate("Mon 05-Jun-2017 07:39:36", "EEE dd-MMM-yyyy hh:mm:ss");
		System.out.println(formatDate(date));
		
	}
}
